#include <iostream>
#include <math.h>
#include <algorithm>
using namespace std;


struct point{
	int x,y;
	int front=0,back=0;
	bool operator >> (const point b)const{
		double ku=y/(x-1.0), kd=(y-1.0)/x;
		double kbu=b.y/(b.x-1.0), kbd=(b.y-1.0)/b.x;
		return ((b.x*b.x+b.y*b.y > x*x+y*y)  &&  ((kbu>kd && kbu<ku)  ||  (kbd>kd && kbd<ku)));
	}
};


bool cmp(point a,point b){
	if(a.back == b.back)
		return a.front<b.front;
	return a.back<b.back;
}




int main(){
	int n,ans=0;
	cin>>n;
//	int front[n],back[n];
	point a[n];
//	for(int i=0;i<n;i++)
	for(int i=0;i<n;i++){
		cin>>a[i].x>>a[i].y;
		for(int j=0;j<i;j++){
			if(a[i] >> a[j]){
				a[i].back++;
				a[j].front++;
			}
			else if(a[j] >> a[i]){
				a[j].back++;
				a[j].front++;
			}
		}
	}
	sort(a,&a[n],cmp);
	int sum=0;
	for(int i=0;i<n;i++){
		sum++;
		sum -= a[i].back;
		ans = max(ans,sum);
	}
	cout<<ans;
	return 0;
}
